Copyright: Copyright © 1996 RealSoft Development


Contents
TShareWare Component v2.1 - Delphi 16/32

TShareware is a custom Delphi component  that allows you to control usage of your Delphi programs by unregistered users.   By dropping this component onto your project and adding a few lines of code, you can start distributing crippled versions of your programs, and hopefully receive many registrations.  Shareware can be very profitable for you, and beneficial to customers who like to try before they buy!

Instructions

Properties

Methods

Events

TECHNICAL SUPPORT VIA E-MAIL  103256.3104@compuserve.com

COMPUSERVE REGISTRATION : GO SWREG # 11829  US $19.95


Events

event OnBeforeShow :

Occurs just before dialog is displayed.

event OnAfterShow :

Occurs just after dialog is displayed.

event OnRegister :

Occurs after correct password has been input, and status = ssRegistered.


Instructions
How Does it Work?

There are several types of shareware commonly seen in the software market today. TShareWare supports three types:  NagWare, CounterWare, and TimerWare.  NagWare is the most common type, and prompts users to register by displaying a pop up dialog at inconvienent times, sometimes frequently.  Counterware “counts” how many times a user runs a particular program, and notifies them when they have reached the limit.  TimerWare allows users to use a program for a specified time from the date of installing.  A new feature called Delphi_IDE allows your project or component to run in Delphi only.

The Secret File

To protect your TimerWare and CounterWare from cheaters who will definitely try to beat the program by re-installing or changing the system date, TShareWare stores it’s information in a special file written to the user’s WINDOWS directory.  The only way to restart the TimerWare or CounterWare is to delete this file.  Fortunately, we have provided several ways to disguise this file so users would have to find a needle in a haystack!  You are the only person who will know about the “secret” file.

Installing TShareWare

To install the TShareWare component, first create a subdirectory of DELPHI called INTENSE or use another directory on your Delphi search path.  Next, unzip the file SHWARE.ZIP into the directory, and launch DELPHI.  Next, in Delphi, select OPTIONS | INSTALL COMPONENTS, click ADD, and then type in the location of the directory.  Locate the file called SHWARE.PAS and select it.  Now press OK to rebuild the library.  A component group called INTENSE should appear, and TShareWare should be inside.

For Delphi2, you should copy all of the 32 bit files to a directory off of your Delphi2.0 search path and install the file SHWARE.PAS to your library from the COMPONENT menu.  The documentation is the same for both components.  If you purchase the source code, SHWARE.PAS will compile in both Delphi 16 and 32.

Making a Project Shareware

To use TShareWare in your Delphi project, first drop a TShareWare component anywhere on your main form.  You should then customize the component for your program by modifying its properties (see list of properties).  Whenever you need to display the shareware dialog, add this line of code:  Shareware1.Execute.We suggest adding this line to your form’s OnClose or OnCreate events.  The following line of code will check the status of the shareware to see if it has expired:  If Shareware1.ShareStatus = ssExpired then {do something}

That’s all you’ll need to use the basic features of the component.

Making a Component Shareware

To make a component shareware requires a more advanced understanding of Delphi, and a few extra lines of code.  To use TShareWare in your custom component, add SHWARE to your component’s USES clause.  Next, add the following lines to your component’s CONSTRUCTOR, or another CAREFULLY chosen spot in your code:

Var

 	ShareWare1 : TShareWare;

Begin

ShareWare1 := TShareWare.Create(Self);

     {modify shareware properties here}

ShareWare1.Execute;

{check shareware status if desired}

     ShareWare1.Free;

end;

Note:  Be careful where you place this code!  If you place it in the wrong spot, you may interfere with normal Delphi operations and cause problems.  We advise not to place TShareWare in the DESTRUCTOR or LOADED procedures.

Customizing TShareWare

By changing the properties of the TShareWare component, either at design-time or at run-time, you can customize it for your program.  The following pages define each of TShareWare’s properties and events.  You should know what all of the properties do to take full advantage of the component.

IMPORTANT NOTE:

 DO NOT DISTRIBUTE SHWARE.PAS WITH YOUR PROGRAM FILES.  USERS SHOULD NOT HAVE ACCESS TO THE TSHAREWARE PROGRAM ITSELF! IF YOU ARE DISTRIBUTING TSHAREWARE IN ONE OF YOUR COMPONENTS (IN .DCU FORM), YOU MUST COPY THE ENTIRE CODE FROM SHWARE.PAS, AND ADD IT TO YOUR CODE TO BE “COMPILED IN” TO IT.  IF YOU ARE USING OUR DIALOG FORM, YOU SHOULD ALSO INCLUDE THE .DFM FILE (RENAMING IT IS OK).

IF YOU DO NOT DO THIS, USERS WITHOUT TSHAREWARE WILL NOT

BE ABLE TO INSTALL YOUR COMPONENT!  THEY WILL RECEIVE A

“UNIT SHWARE.DCU NOT FOUND” ERROR.

DISCLAIMER:

USE THIS COMPONENT AT YOUR OWN RISK.

REALSOFT  DEVELOPMENT WILL NOT BE HELD RESPONSIBLE FOR LOSS OF SALES DUE TO IMPROPER USE, OR MALFUNCTION OF THIS SOFTWARE.


Methods

method Execute :

Displays the TShareWare dialog and updates the ShareWare status.

method DelphiRunning :  boolean

Allows you to determine if Delphi is running.  Also used internally for stDelphi_IDE.  You can check if Delphi is Running, and if not, warn the

user that your application will terminate unless they register or run Delphi.


Properties

property AutoPreview  :  (prOFF, prON)

By changing AutoPreview to prON, the ShareWare dialog will pop up exactly as it   will appear in your program.  This will allow you to preview it at design-time.

property BlockHeader   +

Blockheader contains nested properties about the first “block” of the dialog.

This is usually the title of the product or program.

property BlockHeader.AlignmentText  :  (taCenter, taLeft, taRight)

Aligns the text in the block.

property BlockHeader.BorderStyle  :  (bsNone, bsSingle)

Selects a border for the block

property BlockHeader.Color  :  TColor

Selects the background color for the block

property BlockHeader.Ctl3D  :  Boolean

Selects a 3-D look for the block

property BlockHeader.Font  :  TFont

Selects the font for the block

property BlockHeader.Lines  :  TStrings

Edits strings that make up the block text.

** Note:  We have recognized a problem with the RZStringlist  property editor when used to edit BlockHeader Lines.  This is not a problem with TShareWare, as it appears the RZ editor was not designed for “nested” TStrings properties.

property BlockHeader.ScrollBars  : (ssNone, ssVertical, ssHorizontal, ssBoth)

Enables scrollbars for the block text.

property BlockInfo   +

Blockinfo contains nested properties about the second “block” of the dialog.

            This is usually a brief or detailed description of the product, and registration terms.

property BlockInfo.AlignmentText  :  (taCenter, taLeft, taRight)

   	Aligns the text in the block.

property BlockInfo.BorderStyle  :  (bsNone, bsSingle)

Selects a border for the block

property BlockInfo.Color  :  TColor

Selects the background color for the block

property BlockInfo.Ctl3D  :  Boolean

Selects a 3-D look for the block

property BlockInfo.Font  :  TFont

Selects the font for the block

property BlockInfo.Lines  :  TStrings

Edits strings that make up the block text.

** Note:  We have recognized a problem with the RZStringlist  property editor when used to edit BlockHeader Lines.  This is not a problem with TShareWare, as it appears the RZ editor was not designed for “nested” TStrings properties.

property BlockInfo.ScrollBars  : (ssNone, ssVertical, ssHorizontal, ssBoth)

Enables scrollbars for the block text.

property BlockOrder    +

BlockOrder contains nested properties about the first “block” of the dialog.

            This is usually the ordering and pricing information about the product.

property BlockOrder.AlignmentText  :  (taCenter, taLeft, taRight)

Aligns the text in the block.

property BlockOrder.BorderStyle  :  (bsNone, bsSingle)

Selects a border for the block

property BlockOrder.Color  :  TColor

Selects the background color for the block

property BlockOrder.Ctl3D  :  Boolean

Selects a 3-D look for the block

property BlockOrder.Font  :  TFont

Selects the font for the block

property BlockOrder.Lines  :  TStrings

Edits strings that make up the block text.

** Note:  We have recognized a problem with the RZStringlist  property editor when used to edit BlockHeader Lines.  This is not a problem with TShareWare, as it appears the RZ editor was not designed for “nested” TStrings properties.

property BlockOrder.ScrollBars  : (ssNone, ssVertical, ssHorizontal, ssBoth)

Enables scrollbars for the block text.

property Caption  :  String

Sets the caption of the shareware dialog window

property Color  :  TColor

Sets the color of the shareware dialog form

property DisplayStatus  :  Boolean

Determines whether or not the dialog will display the registration status

at the bottom of the form.

property Enabled  :  boolean

Setting enabled to false will stop the dialog from being displayed

even if the Execute method is called.

property FileDate : String

Sets the date of the “secret file”.  We suggest using a date that will be difficult to 	pick out from the other files in the WINDOWS directory.  If you do not specify a

date, the current date will be used.

property FileHide : Boolean

Setting this property to true will make the “secret file” attribute hidden.

property FileName : String

This property contains the name of the “secret file”.  We suggest using a name that

will fool nosy users, such as WINDAT.DLL or any other disguising name.

            **Note: If you do not specify a filename, the “secret file” will be disabled, and

TimerWare and CountWare will never change statuses!

property FileSize : Integer

Sets the size of the “secret file”.  For hiding purposes, we allow variable sizes.

            You must specify a file size between 32 and 32,000 for the “secret file” to work.

property Font : TFont

Sets the font for the dialog. Only affects the ShareStatus label and button captions.

property MaxCount : Integer

Sets the maximum number of times that CountWare allows users run a program.

property MaxDays : Integer

Sets the maximum number of days that TimerWare allows users run a program.

property Name : String

Name of the component

property Password : String

Upon entering a password , a “register” button will appear on the dialog.  Users

can then register the component at any time after purchasing a password from you.

property ShareStatus : (ssUnRegistered, ssRegistered, ssExpired, ssTampered)

ShareStatus allows you to check the current status of the shareware program.

You can use ShareStatus in your program to trigger other events in your program.

ssExpired means the user has exceeded the limit of TimerWare or CounterWare.

ssUnRegistered means the software has not been registered, but has not expired.

ssRegistered means the user has entered the correct password to register.

ssTampered means the user has modified the “secret file” or changed the date!

property ShareType : (stNagWare, stCounterWare, stTimerWare, stDelphi_IDE)

ShareType sets the type of shareware.  Note that TimerWare and CounterWare

require other important properties to be set to work properly.  If you set it to

Delphi_IDE, you can create a program that will only work while Delphi is running.

property SilentMode : boolean

SilentMode allows you to use the ShareStatus and Timer/Counter features of

TShareWare without displaying a dialog.  You can use your own dialog based

upon ShareStatus if you wish.

** Note:  ShareStatus is not updated until a call to EXECUTE is made.  You

should turn SilentMode on, and then call EXECUTE before checking ShareStatus!

property Tag : Integer

Component tag.

Read-only property RemainCount : Integer

Contains current uses left in CounterWare.

Read-only property RemainDays : Integer

Contains current Days left in TimerWare.